mongodb 导入导出
简介
mongodb提供了mongoexport/mongoimport以支持将数据表进行导入导出。
导入导出命令一般用于特殊的数据处理用途,由于不包含索引处理,且json格式无法支持所有bson类型,因此不适合用于重要数据的备份恢复。
参考文档
https://docs.mongodb.com/manual/reference/program/mongoimport/
https://docs.mongodb.com/manual/reference/program/mongoexport/
mongoexport用法
说明
mongoexport 支持将mongodb数据表导出为json或csv格式,可在导出时指定一定的查询条件实现过滤。
命令的执行要求当前用户对数据库有read权限;
在mongos或副本集上执行时,默认采用primary readperference选项,即优先从主库上读取。
示例用法
./mongoexport --host 127.0.0.1 --port 27017 -d appdb -c T_TEST_DATA -u appuser -p appuser@2016 -o export/T_TEST_DATA.json
参数说明
参数名 | 参数值 |
---|---|
host[h] | 主机 |
port | 端口 |
db[d] | 目标数据库 |
username[u] | 用户名 |
password[p] | 密码 |
authenticationDatabase | 鉴权数据库,不指定则使用database参数 |
collection[c] | 目标Collection |
query[q] | 查询过滤条件,不指定则导出全表 |
out[o] | 目标输出文件 |
type | 格式类型,默认json |
skip | skip条件 |
limit | limit条件 |
sort | sort条件 |
其他用法
//按分页导出
mongoexport -d test -c records --sort '{a: 1}' --limit 100 --skip 100 --out export.1.json
//按查询条件导出
mongoexport -d test -c records -q '{ a: { $gte: 3 } }' --out exportdir/myRecords.json
mongoimport用法
说明
mongoimport 支持将json或csv格式的数据文件导入到mongodb数据库,该命令与mongoexport结合使用。
命令的执行要求当前用户对数据库有readWrite权限;
导入命令要求在mongos或副本集主节点上执行。
示例用法
./bin/mongoimport --host 127.0.0.1 --port 27017 -d appdb -c T_TEST_DATA_1 -u appuser -p appuser@2016 --numInsertionWorkers 50 --file export/T_TEST_DATA.json
参数说明
参数名 | 参数值 |
---|---|
host[h] | 主机 |
port | 端口 |
db[d] | 目标数据库 |
username[u] | 用户名 |
password[p] | 密码 |
authenticationDatabase | 鉴权数据库,不指定则使用database参数 |
collection[c] | 目标Collection,不指定则采用文件名称 |
drop | 指定该选项,则导入前删除表 |
file | 目标导入文件 |
type | 格式类型,默认json |
mode | 导入模式,有insert、upsert、merge,默认insert |
numInsertionWorkers | 并发数 |
导入模式
upsert模式,会将已有数据替换;
merge模式,会将已有数据进行合并;
执行效率
使用insert的性能最高,建议使用;
在多核的环境中,通过numInsertionWorkers可指定并发运行,可提升一定效率。
参考数据
使用mongoexport 导出860W的数据记录,文件大小2.9G,共耗时10分钟
使用mongoimport 导入860W的数据记录,使用--mode=insert模式,用时3分钟15秒(numInsertionWorkers=50)
使用mongoimport 导入860W的数据记录,使用--mode=insert模式,用时5分钟(numInsertionWorkers=1)
使用mongoimport 导入860W的数据记录,使用--mode=upsert模式,用时45分钟(numInsertionWorkers=1)
使用mongodump 导出为40s,而mongorestore为4分钟。
作者: 美码师(zale)
出处: http://www.cnblogs.com/littleatp/, 如果喜欢我的文章,请关注我的公众号
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 原文链接 如有问题, 可留言咨询.